﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using vudu.Presentacion.Contrato.VU_10_Consultar_Horarios_de_Materia_e_Imprimir;
using vudu.Logica.Fachada;
using vudu.ClasesDominio;
using System.Data;
using System.Web.SessionState;

namespace vudu.Presentacion.Presentador.VU_10_Consultar_Horarios_de_Materia_e_Imprimir
{
    public class PresentadorMostrarHorarioEstudiante
    {
        private EnlaceLogico _fachada;
        private IContratoMostrarHorarioMateria _vista;
        private Profesor _prof;
        private Estudiante _est;


        public PresentadorMostrarHorarioEstudiante(EnlaceLogico fachada, IContratoMostrarHorarioMateria vista)
        {
            
            _vista = vista;
            _fachada = fachada;
        }

        //aqui se llenan los datos de la materia dependiendo si es estudiante o profesor
        public void ConsultarHorarioDeMateria(SeccionMateria seccion, String Rol) 
        {
            
            String NombreEscuela;
            String NombreUniversidad;
            String NombreMateria;
            List<HorarioDeClase> listaHorario = new List<HorarioDeClase>();
            if (Rol == "Profesor")
            {
                _prof = (Profesor)_fachada.RolActual;
                _vista.Usuario.Text = "Profesor(a): " + _prof.Nombre +" "+ _prof.Apellido;
                _vista.NombreProfesor.Text = _prof.Nombre + _prof.Apellido;
            }

            if (Rol == "Estudiante")
            {
                _est = (Estudiante)_fachada.RolActual;
                _vista.Usuario.Text = "Alumno(a): " + _est.Nombre + _est.Apellido;
                _vista.NombreProfesor.Text = seccion.Profesor.Nombre;

            }
            listaHorario = _fachada.HorarioDeMateria(seccion);
            LlenarTablaHorario(listaHorario);
            _vista.SeccionMa.Text = Convert.ToString(seccion.Materia.Codigo);
            _vista.NombreMa.Text = seccion.Materia.Nombre;
            NombreMateria = seccion.Materia.Nombre;
            NombreEscuela =_fachada.NombreDeEscuela(NombreMateria);
            _vista.NombreEscuela.Text = NombreEscuela;
            NombreUniversidad = _fachada.NombreDeUniversidad(NombreMateria);
            _vista.NombreUniversidad.Text = NombreUniversidad;
              
        }

        //aqui se llenan las practicas dependiendo si es profesor o estudiante
        public void ConsultarHorarioDePractica(Practica seccion, String Rol)
        {
            List<String> EscuelaUniversidad;
            List<HorarioDeClase> listaHorario = new List<HorarioDeClase>();
            listaHorario = _fachada.HorarioDePractica(seccion);
            if (Rol == "Profesor")
            {
                _prof = (Profesor)_fachada.RolActual;
                _vista.Usuario.Text = "Profesor(a): " + _prof.Nombre + " " + _prof.Apellido;
                _vista.NombreProfesor.Text = _prof.Nombre + _prof.Apellido;
            }

            if (Rol == "Estudiante")
            {
                _est = (Estudiante)_fachada.RolActual;
                _vista.Usuario.Text = "Alumno(a): " + _est.Nombre + _est.Apellido;
                _vista.NombreProfesor.Text = seccion.profesor.Nombre;

            }


            LlenarTablaHorario(listaHorario);
            _vista.SeccionMa.Text = Convert.ToString(seccion.NumeroSeccion);
            _vista.NombreMa.Text = seccion.NombrePractica;
            EscuelaUniversidad = _fachada.NombreDeEscuelaUniversidad(seccion.IdPractica);
            _vista.NombreEscuela.Text = EscuelaUniversidad.ElementAt(0);
            _vista.NombreUniversidad.Text = EscuelaUniversidad.ElementAt(1);

        }

        //llena la tabla con las horas y los salones
        public void LlenarTablaHorario(List<HorarioDeClase> listaHorario) 
        {
            for (int indiceLista = 0; indiceLista < listaHorario.Count; indiceLista++)
            {
                String dia = listaHorario[indiceLista].Dia;
                switch (dia)
                {
                    case "Lunes":
                        _vista.HoraLunes.Text = Convert.ToString(listaHorario[indiceLista].HoraInicio.Hour) +":" + "00" + " - " +
                                                Convert.ToString(listaHorario[indiceLista].HoraFin.Hour) + ":" + "00";
                        _vista.SalonLunes.Text = Convert.ToString(listaHorario[indiceLista].SalonDeClase.Nombre);

                        break;
                    case "Martes":
                        _vista.HoraMartes.Text = Convert.ToString(listaHorario[indiceLista].HoraInicio.Hour) +":" + "00" + " - " +
                                                 Convert.ToString(listaHorario[indiceLista].HoraFin.Hour) + ":" + "00";
                        _vista.SalonMartes.Text = Convert.ToString(listaHorario[indiceLista].SalonDeClase.Nombre);

                        break;
                    case "Miercoles":
                         _vista.HoraMiercoles.Text = Convert.ToString(listaHorario[indiceLista].HoraInicio.Hour) +":" + "00" + " - " +
                                                     Convert.ToString(listaHorario[indiceLista].HoraFin.Hour) + ":" + "00";
                        _vista.SalonMiercoles.Text = Convert.ToString(listaHorario[indiceLista].SalonDeClase.Nombre);

                        break;

                    case "Jueves":
                         _vista.HoraJueves.Text = Convert.ToString(listaHorario[indiceLista].HoraInicio.Hour) +":" + "00" + " - " +
                                                 Convert.ToString(listaHorario[indiceLista].HoraFin.Hour) + ":" + "00";
                        _vista.SalonJueves.Text = Convert.ToString(listaHorario[indiceLista].SalonDeClase.Nombre);

                        break;

                    case "Viernes":
                        _vista.HoraViernes.Text = Convert.ToString(listaHorario[indiceLista].HoraInicio.Hour) +":" + "00" + " - " +
                                                  Convert.ToString(listaHorario[indiceLista].HoraFin.Hour) + ":" + "00";
                        _vista.SalonViernes.Text = Convert.ToString(listaHorario[indiceLista].SalonDeClase.Nombre);

                        break;

                    default:

                        break;
                }





            }
        }
    }
}